package com.gp8.tier2;

//Necessaire au RMI
import java.io.Serializable;
import java.rmi.NotBoundException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;


//Necessaire REST
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
import javax.xml.bind.JAXBElement;

import com.gp8.tier3.Piaffeur;
import com.gp8.tier3.ServiceGestionPiaffeur;

@Path("/")
public class ServiceDeuxiemeTier implements Serializable, Remote {
	
	private static final long serialVersionUID = 1L;
	private ServiceGestionPiaffeur gestionPiaffeurService;

	public ServiceDeuxiemeTier() throws RemoteException {
		Registry registry;

		registry = LocateRegistry.getRegistry("127.0.0.1", 2000);
		try {
			gestionPiaffeurService = (ServiceGestionPiaffeur) registry.lookup("gestionPiaffeurServiceStub");
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
		
		UnicastRemoteObject.exportObject(this, 0);
    }
	
	@GET
	@Path("connexion/{mail}/{mdp}")
	@Produces("text/plain")
	public String ConnexionCompte(@PathParam("mail") String mail, @PathParam("mdp") String mdp) {
		Piaffeur piaffeur;
		String reponse = "Erreur lors de la connexion !";
		try {
			piaffeur = gestionPiaffeurService.ConnexionCompte("a@mail.fr", "abc");
			reponse = "Bienvenue " + piaffeur.getPseudo();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return reponse;
	}
	
//	public static void main(String args[]) throws Exception
//	{
		
//		//Création d'un compte réussi
//		Piaffeur perso1 = gestionPiaffeurService.CreationCompte("a@mail.fr", "perso1", "abc");
//		if (perso1 != null) {
//			System.out.println("Compte créé avec succès !");
//			System.out.println("Votre pseudo : " + perso1.getPseudo());
//			System.out.println("Votre mdp : " + perso1.getPassword());
//		} else {
//			System.out.println("Ce compte existe déjà ! ");
//		}
//		
//		//Création d'un compte existant
//		Piaffeur perso2 = gestionPiaffeurService.CreationCompte("a@mail.fr", "perso1", "abc");
//		if (perso2 != null) {
//			System.out.println("Compte créé avec succès !");
//			System.out.println("Votre pseudo : " + perso2.getPseudo());
//			System.out.println("Votre mdp : " + perso2.getPassword());
//		} else {
//			System.out.println("Ce compte existe déjà ! ");
//		}
//		
//		//Connexion réussi
//		Piaffeur perso3 = gestionPiaffeurService.ConnexionCompte("a@mail.fr", "abc");
//		if (perso3 != null) {
//			System.out.println("Bienvenue " + perso3.getPseudo());
//		} else {
//			System.out.println("Erreur lors de la connexion !");
//		}
//		
//		//Connexion raté
//		Piaffeur perso4 = gestionPiaffeurService.ConnexionCompte("a@mail.fr", "abca");
//		if (perso4 != null) {
//			System.out.println("Bienvenue " + perso4.getPseudo());
//		} else {
//			System.out.println("Erreur lors de la connexion !");
//		}
//		
//		//Deconnexion
//		gestionPiaffeurService.DeconnexionCompte(perso3);
//		
//		//Connexion réussi
//		perso3 = gestionPiaffeurService.ConnexionCompte("a@mail.fr", "abc");
//		if (perso3 != null) {
//			System.out.println("Bienvenue " + perso3.getPseudo());
//		} else {
//			System.out.println("Erreur lors de la connexion !");
//		}
//		
//		//Recherche personne avec un résultat
//		gestionPiaffeurService.RecherchePiaffeur("ers");
//		//Recherche personne sans résultat
//		gestionPiaffeurService.RecherchePiaffeur("2");
//		
//		//Ajouter un message
//		gestionPiaffeurService.AjouterMessage(perso3, "Bonjour à tous !");
//		
//		//Supprimer un message
//		gestionPiaffeurService.SupprimerMessage(perso3, 0);
//		
//		//Ajouter un message
//		gestionPiaffeurService.AjouterMessage(perso3, "Hello world !");
//		
//		//Recherche message avec un résultat
//		gestionPiaffeurService.RechercheMessage("llo");
//		//Recherche message sans résultat
//		gestionPiaffeurService.RechercheMessage("2");
//		
//		//Création d'un compte réussi Perso5
//		Piaffeur perso5 = gestionPiaffeurService.CreationCompte("b@mail.fr", "perso5", "abc");
//		if (perso5 != null) {
//			System.out.println("Compte créé avec succès !");
//			System.out.println("Votre pseudo : " + perso5.getPseudo());
//			System.out.println("Votre mdp : " + perso5.getPassword());
//		} else {
//			System.out.println("Ce compte existe déjà ! ");
//		}
//		
//		//Connexion réussi Perso5
//		perso5 = gestionPiaffeurService.ConnexionCompte("b@mail.fr", "abc");
//		if (perso5 != null) {
//			System.out.println("Bienvenue " + perso5.getPseudo());
//		} else {
//			System.out.println("Erreur lors de la connexion !");
//		}
//		
//		//Perso5 s'abonne à Perso1
//		gestionPiaffeurService.AjouterAbonnement(perso5, perso1);
//		
//		//Perso5 affiche ses abonnements
//		gestionPiaffeurService.mesAbonnements(perso5);
//		
//		//Perso1 affiche ses abonnés
//		gestionPiaffeurService.mesAbonnes(perso1);
//		
//		//Perso5 supprime son abonnement de Perso1
//		gestionPiaffeurService.SupprimerAbonnement(perso5, perso1);
//		
//		//Supprimer compte de Perso5
//		gestionPiaffeurService.SuppressionCompte(perso5);
//	}
}
